Digital Video Broadcasting (DVB) is an organization which undertakes standardization activities in the field of digital broadcasting (see http://www.dvb.org). DVB's Multimedia Home Platform (MHP) standard (ETSI reference TS 101 812, version 1.1.1, blue book reference A057 05/00) is a series of measures designed to promote the harmonized transition from analogue television (TV) to a digital interactive multimedia future. In particular, the MHP defines a generic, i.e. hardware independent, interface between interactive digital applications and the terminals on which those applications execute. This enables digital content providers to address all types of terminals ranging from low-end to high-end set top boxes, integrated digital TV sets and multimedia PCs. The MHP supports many kinds of applications including the following examples: electronic program guides, information services (enhanced teletext, news and stock tickers etc.), applications synchronized to TV content, gaming and e-commerce.
The DVB MHP standard and its composite elements are known and well documented, and therefore only those elements which relate to the present invention are elaborated upon hereafter.
Digital Storage Media Command and Control (DSM-CC) is employed in DVB's MHP as a toolkit for developing control channels associated with MPEG-1 and MPEG-2 streams. Principally defined in part 6 of the MPEG-2 standard (Extensions for DSM-CC), it enables amongst other things broadcast carousels to be defined. Such carousels are mechanisms for assembling data sets into a buffer which are played-out in a cyclic manner, i.e. broadcast periodically. For example, such a carousel may be used to broadcast all the application files including Java class files, textual information and graphical data required for the receiver to execute MHP applications.
The DSM-CC Object Carousel is used not only in DVB's MHP but also in some digital terrestrial television broadcasts including, for example, ONdigital, BBC TV and Channel 4 digital broadcasts in the UK.
MHP is based around a platform known as DVB-J and includes a virtual machine as defined in the Java Virtual Machine (JVM) specification from Sun Microsystems. Java provides a means of producing hardware independent, executable “byte code” which is executed on a JVM. Different hardware platforms can have different JVM implementations but all will execute the same byte code. This is ideal for broadcast environments such as digital TV, where applications can be written, compiled and broadcast to a variety of different set-top boxes or integrated digital TVs.
Java source code is compiled with a Java compiler into byte code and stored in class files, which can be executed by a JVM. With DVB's MHP, Java application class files are broadcast to a receiver using DSM-CC which may prescribe a corresponding file structure which can then be replicated to store or cache the class files at the receiver. In addition, the DSM-CC may be used to defining modules comprising groups of related Java class files and other files for broadcast.
In the first JVM implementations, the byte code was interpreted however modern JVMs compile the byte code into faster executing, native instructions. Such compilation may typically occur in any of the following ways:
Just in Time (JIT)
This is where byte code is compiled to native code either when a class file is loaded or a method (a section of byte code which performs a certain function) within a class file is executed. A disadvantage of JIT implementations is that the JVM must spend an amount of time compiling a class or method when it is first accessed. During this time the JVM waits until the compilation is completed, pausing the execution of the Java application. Typically the more optimization that is performed by the compiler the larger the latency, but the faster the native code will run.
Runtime Analysis
These are based on an interpreted JVM. The JVM takes measurements at runtime and assesses which classes or methods would produce the best performance gain if they were compiled. This could include measuring the number of times a class or method is used and the amount of time spent executing byte code from that class or method. Once identified these can be compiled in the foreground (introducing latency) or compiled in the background, using otherwise wasted processor time. JVMs using this technology have less latency when new class files are loaded or previously unused methods are executed than JIT implementations, but run at a slower speed since some interpretation is always performed. The storage of runtime information has a small overhead on the execution speed. This technique requires both a byte code interpreter and a byte code to native code compiler.
Ahead of Time (AOT)
The byte code is processed after compilation and a new class file is produced. The new class file contains native implementations of methods. The JVM recognizes these native implementations and uses them instead of byte code. Typically better optimizations can be performed by AOT time compilation than JIT since compile time does not hold up the execution of the Java application. The native code is specific to a single processor, thus AOT compilation is not well suited to a broadcast environment since there is likely to be wide range of processors used by different receiver manufacturers.